package com.epin.business.system.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.epin.base.exception.check.RecordQuoteException;
import com.epin.base.exception.check.RecordRepeatException;
import com.epin.business.system.entity.Dept;
import com.epin.business.system.entity.bo.UserNormal;
import com.epin.business.system.entity.vo.DeptParam;

/**
 * <p>
 * 群组管理 服务类
 * </p>
 *
 * @author laijianbin
 * @since 2017-06-05
 */
public interface DeptService extends IService<Dept> {
	
	/**
	 * <p>实现群组分页查找</p>
	 * 
	 * @param pageNumber 页数
	 * @param pageSize 每页大小
	 * @param params 参数表
	 * 
	 * <p>
	 * 		可添加数据：
	 * 		<p>keyword：关键词</p>
	 * 		<p>companyId：当前公司ID</p>
	 * 		<p>status：公司状态</p>
	 * </p>
	 * 
	 * @return Page<>
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	Page<Dept> selectDeptsPage(Integer pageNumber, Integer pageSize, Map<String, Object> params);
	
	
	
	/**
	 * <p>新增或更新组群信息</p>
	 * <p>抛出记录重复异常</p>
	 * 
	 * @param id 组群ID
	 * @param dParam 组群参数
	 * @param operator 当前操作人员
	 * 
	 * @return boolean
	 * @throws RecordRepeatException
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	boolean insertOrUpdateDept(Integer id, DeptParam dParam, UserNormal operator) throws RecordRepeatException;
	
	
	/**
	 * <p>批量删除组群</p>
	 * <p>抛出记录被引用异常</p>
	 * 
	 * @param ids 组群id数组
	 * 
	 * @return boolean
	 * @throws RecordQuoteException
	 * 
	 * @author fujiajun
	 * @since 2017-11-09
	 */
	boolean deleteDeptsByIds(List<Integer> ids) throws RecordQuoteException;
	
}
